package com.atguigu.ssyx.acl.controller;


import com.atguigu.ssyx.acl.service.PerMissionService;
import com.atguigu.ssyx.common.result.Result;
import com.atguigu.ssyx.model.acl.Permission;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.Map;

@RequestMapping("/admin/acl/permission")
@RestController
//@CrossOrigin
@Api(tags = "菜单管理")
public class PerMissionController {

    @Resource
    private PerMissionService permissionService;


//    //为角色进行分配菜单
//    @ApiOperation("为角色进行分配菜单")
//    @PostMapping("/doAssign")
//    public Result doAssign(@RequestParam Long roleId,
//                           @RequestParam Long[] permissionId){
//        permissionService.saveRolePermission(roleId,permissionId);
//        return Result.ok(null);
//    }
//
//
//
//
//    //获取所有角色，和根据用户id查询用户分配角色列表
////        @ApiOperation(value = "获取所有角色")
////        @GetMapping("/toAssign/{adminId}")
////        public  Result toAssign(@PathVariable Long adminId){
////            //返回map集合包含两部分数据： 所有角色 和 为用户分配角色列表
////            Map<String,Object> map = roleService.getRoleByAdminId(adminId);
////            return Result.ok(map);
////        }
//
//
//    //获取所有菜单，和根据角色id查询角色分配菜单列表
//    @ApiOperation("获取所有菜单")
//    @GetMapping("/toAssign/{roleId}")
//    public  Result toAssign(@PathVariable Long roleId){
//        //返回map集合包含两部分数据： 所有角色 和 为用户分配角色列表
//        Map<String,Object> map =permissionService.getPermissionRoleId(roleId);
//        return Result.ok(map);
//    }


    //查询所有菜单
    @ApiOperation("查询所有菜单")
    @GetMapping
    public Result list(){
        List<Permission> list= permissionService.queryAllPermission();

        return Result.ok(list);

    }

    //添加菜单
    @ApiOperation("添加菜单")
    @PostMapping("save")
    public  Result save(@RequestBody Permission permission){
    permissionService.save(permission);
    return Result.ok(null);
    }


    //修改菜单
    @ApiOperation("修改菜单")
    @PutMapping("update")
    public Result update(@RequestBody Permission permission){
        permissionService.updateById(permission);
        return Result.ok(null);
    }


    //递归删除菜单
    @ApiOperation("递归删除菜单")
    @DeleteMapping("remove/{id}")
    public Result remove(@PathVariable Long id){
        permissionService.removeChildById(id);
        return  Result.ok(null);

    }

}
